﻿/*
 * 过滤器 Filter：
 * 1、授权 Authorization
 * 2、行为 Action
 * 3、结果 Result
 * 4、异常 Exception
 * 5、资源 Resource
 * 
 * 
 * 
 * 
 * **/
using Microsoft.AspNetCore.Mvc;
using Microsoft.AspNetCore.Mvc.Filters;

namespace Max.PH5_2103A.Shopping.Frame.API.Config
{
    /// <summary>
    /// 自定义的异常过滤器
    /// </summary>
    public class MyExceptionFilter : IExceptionFilter
    {
        //对异常的处理有很多种，如写入日志文件、写入数据库、发送邮件等等。。。
        //示例只写入日志文件
        NLog.Logger _logger = NLog.LogManager.GetCurrentClassLogger();

        /// <summary>
        /// 
        /// </summary>
        /// <param name="context"></param>
        public void OnException(ExceptionContext context)
        {
            //将异常信息写入日志文件（在个在MyLog.config文件中配置，写入文件）
            _logger.Error(context.Exception.Message);

            //出错了给前台有好提示（匿名类操作）
            context.Result = new JsonResult(new
            {
                Code = 500,
                Message = $"服务器出错啦！具体原因：{context.Exception.Message}"
            }) ;

        }
    }
}
